//
//  UIIMageExtention.swift
//  SwiftLearning
//
//  Created by 黄龙 on 2024/1/8.
//

import Foundation
import UIKit

extension UIImage{
    //用image作为背景色
    func imageBackColor()->UIColor?{
        return UIColor(patternImage: self)
    }
    
//MARK: - 缩放Image
    func scaleImage(toSize newSize: CGSize) -> UIImage? {
        UIGraphicsBeginImageContextWithOptions(newSize,false,UIScreen.main.scale)
        self.draw(in: CGRect(x: 0 ,y: 0 ,width: newSize.width ,height: newSize.height))
        let newImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return newImage //return newImage!.withRenderingMode(.alwaysOriginal)
    }
    

    
//MARK: - 拉伸或平铺Image的指定区域
    func tileOrStretchImageInsets(capInsets:UIEdgeInsets = UIEdgeInsets.zero,resizingMode:UIImage.ResizingMode = .tile)->UIImage?{
//提示气泡背景拉伸、按钮背景拉伸、背景图片平铺等地方适用
        return self.resizableImage(withCapInsets: capInsets, resizingMode: resizingMode)
        //resizableImage该方法返回的是UIImage类型的对象,即返回经该方法拉伸后的图像
        //传入的第一个参数capInsets是UIEdgeInsets类型的数据,即原始图像要被保护的区域
        //UIImageResizingModeTile,     平铺
        //UIImageResizingModeStretch,  拉伸
        //参考：https://www.jianshu.com/p/e8c38c44b15b
    }
    
//MARK: - 重定向相册照片方向为up方向
//将相机拍摄的照片直接绘制到imageview，然后将imageview的image，转成nsdata保存到沙箱，然后下次取出来绘制到imageview上去时，发现可能会自动变成横屏的照片
//这是因为，直接接使用相机拍摄的照片不一定是UIImageOrientationUp的，需要用UIImagePNGRepresentation进行转换
//故在将image保存至相册前，或取出image绘制到ImageView前，都可以调用此方法来保证照片方向UIImageOrientationUp的
    func fixAlbumPhotoOrientation() -> UIImage?{
        if self.imageOrientation == .up{
                return self
        }else{
            UIGraphicsBeginImageContext(self.size)
            self.draw(in: CGRect.init(origin: CGPoint.init(x: 0, y: 0), size: self.size))
            let normalizedimage = UIGraphicsGetImageFromCurrentImageContext()
            return normalizedimage
        }
    }
}
